package com.miniblog.article.server.controller;

import com.github.pagehelper.PageInfo;
import com.miniblog.article.api.entity.Article;
import com.miniblog.article.server.service.ArticleService;
import com.miniblog.common.utils.Msg;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * 路径：com.miniblog.article.server.controller.ArticleController.java
 * 类名：ArticleController.java
 * 功能：文章
 * 备注：
 * 创建人：typ
 * 创建时间：2019/10/22 21:35
 */
@Slf4j
@RestController
public class ArticleController {

    @Autowired
    private ArticleService articleService;

    /**
     * 方法名：articleList
     * 功能：列表跳转
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 21:00
     */
    @GetMapping("articleList")
    public Msg list(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                    @RequestParam(required = false, defaultValue = "10") Integer pageSize,
                    @RequestParam(required = false, defaultValue = "") String search) {
        PageInfo<Article> articleList = null;
        try {
            articleList = articleService.list(pageNum, pageSize, search);
            return Msg.success().add(articleList);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ArticleController --> articleList 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

    /**
     * 方法名：qryByArticleId
     * 功能：根据id获取文章内容
     * 描述：
     * 创建人：typ
     * 创建时间：2019/10/27 18:24
     */
    @GetMapping("qryByArticleId")
    public Msg qryById(@RequestParam(required = true) String id) {
        try {
            Article article = articleService.qryById(id);
            return Msg.success().add(article);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ArticleController --> qryByArticleId 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }


    /**
     * 方法名：articleDel
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/16 23:51
     */
    @GetMapping("articleDel")
    public Msg del(@RequestParam(required = true) String id) {
        try {
            articleService.del(id);
            return Msg.success().add("删除成功！");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ArticleController --> articleDel 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

    /**
     * 方法名：articleEdit
     * 功能：添加博客
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/2 13:33
     */
    @PostMapping("articleEdit")
    public Msg editSubmit(@RequestBody Article article) {
        try {
            articleService.save(article);
            return Msg.success().add("操作成功！");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ArticleController --> articleEdit 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

    /**
     * 方法名： isArticleEnable
     * 功能：修改状态
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 21:00
     */
    @GetMapping("isArticleEnable")
    public Msg isEnable(@RequestParam(required = true) String id, @RequestParam(required = true) Integer enable) {
        try {
            int rows = articleService.isEnable(id, enable);
            return Msg.success().add("编辑成功！");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("请求 ArticleController --> isArticleEnable 异常：{}", e.getMessage());
            return Msg.error().add("服务器异常！");
        }
    }

}